ItemModel.h 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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. CmdClsTypeMeter
  33. };
  34. #define ksItemSubTypeCodeDevice @"01"
  35. #define ksItemSubTypeCodeMode @"02"
  36. #define ksItemSubTypeCodeAppPush @"03"
  37. #define ksItemSubTypeCodeTimer @"05"
  38. #define ksItemSubTypeCodeGeoFencing @"06"
  39. #define ksItemSubTypeCodeHeat @"31"
  40. #define ksItemSubTypeCodeDaylight @"32"
  41. #define ksItemTypeCodeTrigger @"01"
  42. #define ksItemTypeCodeAction @"02"
  43. #define ksItemTypeCodeCondition @"03"
  44. #define ksConditionSubTypeCodeDueDate @"21"
  45. #define ksConditionSubTypeCodeDaysOfWeek @"22"
  46. #define ksConditionSubTypeCodeDueTime @"23"
  47. #define ksConditionSubTypeCodeHomeMode @"02"
  48. #define ksConditionSubTypeCodeExternHeat @"31"
  49. #define ksConditionTypeCodeGreatOrEqual @"05"
  50. #define ksConditionTypeCodeLessOrEqual @"03"
  51. @protocol ItemModel;
  52. @protocol ItemSubModel;
  53. @protocol ModeModel;
  54. @protocol DeviceModel;
  55. @protocol CmdClsValueModel;
  56. @interface CmdClsValueModel : JDJSONModel
  57. @property (copy, nonatomic) NSString *cmdclsValue;
  58. @property (copy, nonatomic) NSString *cmdclsValueMsg;
  59. @property (assign, nonatomic) BOOL isSelected;
  60. //local
  61. @property (strong, nonatomic) NSString *localizedCmdClsValueMsg;
  62. @end
  63. @interface ItemSubModel : JDJSONModel {//subCondition
  64. @protected
  65. NSString *_cmdclsTypeId;
  66. NSString *_cmdclsValueMsg;
  67. NSArray<CmdClsValueModel> *_cmdclsValueList;
  68. NSString *_unit;
  69. }
  70. //@property (copy, nonatomic) NSString *itemSubTypeCode;
  71. @property (copy, nonatomic) NSString *subSequence;
  72. @property (copy, nonatomic) NSString *sourceId;
  73. @property (copy, nonatomic) NSString *sourceSubId;
  74. @property (copy, nonatomic) NSString *conditionTypeCode;
  75. @property (copy, nonatomic) NSString *sourceName;
  76. @property (copy, nonatomic) NSString *sourceSubName;
  77. @property (copy, nonatomic) NSString *actionTypeCode;
  78. @property (copy, nonatomic) NSString *cmdclsCode;
  79. @property (assign, nonatomic, readonly) CmdClsType cmdclsType;
  80. @property (copy, nonatomic) NSString *cmdclsTypeId;
  81. @property (copy, nonatomic) NSString *cmdclsTypeName;
  82. @property (copy, nonatomic) NSString *cmdclsTypeSystemName;
  83. @property (copy, nonatomic) NSString *cmdclsValue;
  84. @property (copy, nonatomic) NSString *cmdclsValueMsg;
  85. @property (copy, nonatomic) NSString *onlineState;
  86. //predefine devices property
  87. @property (copy, nonatomic) NSString *controlMinValue;
  88. @property (copy, nonatomic) NSString *controlMaxValue;
  89. @property (copy, nonatomic) NSString *controlStep;
  90. @property (copy, nonatomic) NSString *unit;
  91. @property (copy, nonatomic) NSString *dataTypeCode;
  92. @property (copy, nonatomic) NSString *deleteYn;
  93. @property (copy, nonatomic) NSString *imageFileName;
  94. @property (copy, nonatomic) NSString *hour;
  95. @property (copy, nonatomic) NSString *minute;
  96. @property (copy, nonatomic) NSString *nickname;
  97. @property (copy, nonatomic) NSString *predCmdclsValue;
  98. //Command - things, modes
  99. @property (copy, nonatomic) NSString *status;
  100. @property (strong, nonatomic) NSMutableArray<ItemModel> *conditions;
  101. @property (copy, nonatomic) NSArray<CmdClsValueModel> *cmdclsValueList;
  102. @property (assign, nonatomic, readonly) NSInteger cmdclsValueMsgLength;
  103. @property (strong, nonatomic) NSString<Ignore> *cmdclsValueMsgLongest;
  104. //flash
  105. @property (copy, nonatomic) NSString<Ignore> *dueDate;
  106. @property (copy, nonatomic) NSString<Ignore> *daysOfWeek;
  107. @property (copy, nonatomic) NSString<Ignore> *dueTime;
  108. @property (copy, nonatomic) NSString<Ignore> *homeModes;
  109. @property (copy, nonatomic) NSString<Ignore> *externHeat;
  110. @property (copy, nonatomic) NSString<Ignore> *daysOfWeekValue;
  111. //- (NSString *)cmdclsValueMsg:(NSString *)cmdclsValue;
  112. //local transition
  113. @property (assign, nonatomic, readonly) BOOL isOnline;
  114. @end
  115. @protocol PredefinedDeviceModel;
  116. @interface ItemModel : JDJSONModel //condition
  117. @property (copy, nonatomic) NSString *predItemSequence;
  118. @property (copy, nonatomic) NSString *itemTypeCode;
  119. @property (copy, nonatomic) NSString *itemSubTypeCode;
  120. @property (copy, nonatomic) NSString *itemName;
  121. @property (copy, nonatomic) NSString *predRuleId;
  122. @property (copy, nonatomic) NSString *predSceneId;
  123. @property (copy, nonatomic) NSString *predActionSequence;
  124. @property (copy, nonatomic) NSString *cnt;
  125. @property (copy, nonatomic) NSString *totalCnt;
  126. @property (copy, nonatomic) NSString *imageFileName;
  127. @property (copy, nonatomic) NSString *sourceId;
  128. @property (copy, nonatomic) NSString *sourceName;
  129. @property (copy, nonatomic) NSString *imageFileViewName;
  130. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *subItems;
  131. //for register
  132. @property (strong, nonatomic) NSMutableArray<PredefinedDeviceModel> *predDevices;
  133. @property (strong, nonatomic) NSMutableArray<ModeModel> *modes;
  134. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *pushes;
  135. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *timers;
  136. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *daylights;
  137. @property (strong, nonatomic) NSMutableArray<ItemSubModel> *heats;
  138. @property (strong, nonatomic) NSMutableArray<DeviceModel> *mobileDevices;
  139. //fuction
  140. @property (assign, nonatomic, readonly) NSInteger sumPredDeviceCount;
  141. @property (assign, nonatomic, readonly) NSInteger sumModesCount;
  142. @property (assign, nonatomic, readonly) NSInteger sumPushesCount;
  143. + (NSString *)itemSubTypeString:(NSString *)itemSubTypeCode;
  144. @end
  145. @interface ItemListModel : JDJSONModel
  146. @property (copy, nonatomic) NSMutableArray<ItemModel> *list;
  147. @end
  148. @interface ItemSubListModel : JDJSONModel
  149. @property (copy, nonatomic) NSMutableArray<ItemSubModel> *list;
  150. @end