ItemModel.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. //
  2. // ItemModel.h
  3. // kneet
  4. //
  5. // Created by Jason Lee on 4/1/15.
  6. // Copyright (c) 2015 ntels. All rights reserved.
  7. //
  8. #import "JDJSONModel.h"
  9. typedef NS_ENUM(NSInteger, CmdClsType) {
  10. CmdClsTypeFirmwareVersion = 0,
  11. CmdClsTypeSwitchBinary, //1
  12. CmdClsTypeSwitchMultiLevel,
  13. CmdClsTypeSwitchColor,
  14. CmdClsTypeSensorBinary,
  15. CmdClsTypeSensorMultiLevel, //5
  16. CmdClsTypeThermostatMode,
  17. CmdClsTypeThermostatFanMode,
  18. CmdClsTypeThermostatSetPoint, //hold
  19. CmdClsTypeLock,
  20. CmdClsTypeMeterCurrent,
  21. CmdClsTypeMeterTotal,
  22. CmdClsTypeAVControlPlayback, //12
  23. CmdClsTypeHomeMode,
  24. CmdClsTypeSpeedControl,
  25. CmdClsTypeMeterCurrentForDAWON, //15
  26. CmdClsTypeMeterTotalForDAWON,
  27. CmdClsTypeValve,
  28. CmdClsTypeBattery,
  29. CmdClsTypeDeviceStatus, //19
  30. CmdClsTypePresence,
  31. CmdClsTypeSystem
  32. };
  33. #define ksItemSubTypeCodeDevice @"01"
  34. #define ksItemSubTypeCodeMode @"02"
  35. #define ksItemSubTypeCodeAppPush @"03"
  36. #define ksItemSubTypeCodeTimer @"05"
  37. #define ksItemSubTypeCodeGeoFencing @"06"
  38. #define ksItemSubTypeCodeHeat @"31"
  39. #define ksItemSubTypeCodeDaylight @"32"
  40. #define ksItemTypeCodeTrigger @"01"
  41. #define ksItemTypeCodeAction @"02"
  42. #define ksItemTypeCodeCondition @"03"
  43. #define ksConditionSubTypeCodeDueDate @"21"
  44. #define ksConditionSubTypeCodeDaysOfWeek @"22"
  45. #define ksConditionSubTypeCodeDueTime @"23"
  46. #define ksConditionSubTypeCodeHomeMode @"02"
  47. #define ksConditionSubTypeCodeExternHeat @"31"
  48. #define ksConditionTypeCode
  49. @protocol ItemModel;
  50. @protocol ItemSubModel;
  51. @protocol ModeModel;
  52. @protocol DeviceModel;
  53. @protocol CmdClsValueModel;
  54. @interface CmdClsValueModel : JDJSONModel
  55. @property (copy, nonatomic) NSString *cmdclsValue;
  56. @property (copy, nonatomic) NSString *cmdclsValueMsg;
  57. @property (assign, nonatomic) BOOL isSelected;
  58. //local
  59. @property (strong, nonatomic) NSString *localizedCmdClsValueMsg;
  60. @end
  61. @interface ItemSubModel : JDJSONModel {//subCondition
  62. @protected
  63. NSString *_cmdclsTypeId;
  64. NSString *_cmdclsValueMsg;
  65. NSArray<CmdClsValueModel> *_cmdclsValueList;
  66. }
  67. //@property (copy, nonatomic) NSString *itemSubTypeCode;
  68. @property (copy, nonatomic) NSString *subSequence;
  69. @property (copy, nonatomic) NSString *sourceId;
  70. @property (copy, nonatomic) NSString *sourceSubId;
  71. @property (copy, nonatomic) NSString *conditionTypeCode;
  72. @property (copy, nonatomic) NSString *sourceName;
  73. @property (copy, nonatomic) NSString *sourceSubName;
  74. @property (copy, nonatomic) NSString *actionTypeCode;
  75. @property (copy, nonatomic) NSString *cmdclsCode;
  76. @property (assign, nonatomic) CmdClsType cmdclsType;
  77. @property (copy, nonatomic) NSString *cmdclsTypeId;
  78. @property (copy, nonatomic) NSString *cmdclsTypeName;
  79. @property (copy, nonatomic) NSString *cmdclsTypeSystemName;
  80. @property (copy, nonatomic) NSString *cmdclsValue;
  81. @property (copy, nonatomic) NSString *cmdclsValueMsg;
  82. @property (copy, nonatomic) NSString *onlineState;
  83. //predefine devices property
  84. @property (copy, nonatomic) NSString *controlMinValue;
  85. @property (copy, nonatomic) NSString *controlMaxValue;
  86. @property (copy, nonatomic) NSString *controlStep;
  87. @property (copy, nonatomic) NSString *unit;
  88. @property (copy, nonatomic) NSString *dataTypeCode;
  89. @property (copy, nonatomic) NSString *deleteYn;
  90. @property (copy, nonatomic) NSString *imageFileName;
  91. @property (copy, nonatomic) NSString *hour;
  92. @property (copy, nonatomic) NSString *minute;
  93. @property (copy, nonatomic) NSString *nickname;
  94. @property (copy, nonatomic) NSString *predCmdclsValue;
  95. @property (strong, nonatomic) NSMutableArray<ItemModel> *conditions;
  96. @property (copy, nonatomic) NSArray<CmdClsValueModel> *cmdclsValueList;
  97. @property (assign, nonatomic, readonly) NSInteger cmdclsValueMsgLength;
  98. @property (strong, nonatomic) NSString<Ignore> *cmdclsValueMsgLongest;
  99. //flash
  100. @property (copy, nonatomic) NSString<Ignore> *dueDate;
  101. @property (copy, nonatomic) NSString<Ignore> *daysOfWeek;
  102. @property (copy, nonatomic) NSString<Ignore> *dueTime;
  103. @property (copy, nonatomic) NSString<Ignore> *homeModes;
  104. @property (copy, nonatomic) NSString<Ignore> *externHeat;
  105. //- (NSString *)cmdclsValueMsg:(NSString *)cmdclsValue;
  106. //local transition
  107. @property (assign, nonatomic, readonly) BOOL isOnline;
  108. @end
  109. @protocol PredefinedDeviceModel;
  110. @interface ItemModel : JDJSONModel //condition
  111. @property (copy, nonatomic) NSString *predItemSequence;
  112. @property (copy, nonatomic) NSString *itemTypeCode;
  113. @property (copy, nonatomic) NSString *itemSubTypeCode;
  114. @property (copy, nonatomic) NSString *itemName;
  115. @property (copy, nonatomic) NSString *predRuleId;
  116. @property (copy, nonatomic) NSString *predSceneId;
  117. @property (copy, nonatomic) NSString *predActionSequence;
  118. @property (copy, nonatomic) NSString *cnt;
  119. @property (copy, nonatomic) NSString *totalCnt;
  120. @property (copy, nonatomic) NSString *imageFileName;
  121. @property (copy, nonatomic) NSString *sourceId;
  122. @property (copy, nonatomic) NSString *sourceName;
  123. @property (copy, nonatomic) NSString *imageFileViewName;
  124. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *subItems;
  125. //for register
  126. @property (strong, nonatomic) NSMutableArray<PredefinedDeviceModel> *predDevices;
  127. @property (strong, nonatomic) NSMutableArray<ModeModel> *modes;
  128. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *pushes;
  129. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *timers;
  130. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *daylights;
  131. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *heats;
  132. @property (strong, nonatomic) NSMutableArray<DeviceModel> *mobileDevices;
  133. //fuction
  134. @property (assign, nonatomic, readonly) NSInteger sumPredDeviceCount;
  135. @property (assign, nonatomic, readonly) NSInteger sumModesCount;
  136. @property (assign, nonatomic, readonly) NSInteger sumPushesCount;
  137. + (NSString *)itemSubTypeString:(NSString *)itemSubTypeCode;
  138. @end
  139. @interface ItemListModel : JDJSONModel
  140. @property (copy, nonatomic) NSMutableArray<ItemModel> *list;
  141. @end
  142. @interface ItemSubListModel : JDJSONModel
  143. @property (copy, nonatomic) NSMutableArray<ItemSubModel> *list;
  144. @end